package behaviorModel.interpreter;

/**
 * 解释器模式
 */
public class Client{


    /**
     * 优点

     1、 可扩展性比较好，灵活。

     2、 增加了新的解释表达式的方式。

     3、 易于实现文法。

     缺点

     1、 执行效率比较低，可利用场景比较少。

     2、 对于复杂的文法比较难维护。

     五、 模式适用场景

     1、可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。

     2、一些重复出现的问题可以用一种简单的语言来进行表达。

     3、文法较为简单。

     六、 模式总结

     1、在解释器模式中由于语法是由很多类表示的，所以可扩展性强。

     2、虽然解释器的可扩展性强，但是如果语法规则的数目太大的时候，该模式可能就会变得异常复杂。所以解释器模式适用于文法较为简单的。

     3、解释器模式可以处理脚本语言和编程语言。常用于解决某一特定类型的问题频繁发生情况。
     * @param args
     */
    public static void main(String args[]){
        String statement = "3 * 2 * 4 / 6 % 5";
        
        Calculator calculator = new Calculator();
        
        calculator.build(statement);
        
        int result = calculator.compute();
        
        System.out.println(statement + " = " + result);    
    }
}